#include "volumetool.h"
#include "ui_volumetool.h"
#include <QGraphicsDropShadowEffect>
#include <QPainter>
VolumeTool::VolumeTool(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::VolumeTool)
{
    ui->setupUi(this);
    InitVolumnTool();
}

VolumeTool::~VolumeTool()
{
    delete ui;
}

void VolumeTool::InitVolumnTool()
{
    //    Qt::Popup
    //    该参数把窗口设定为弹出式窗口。这种窗口没有任务栏条目，而且在失去焦点时会自动关闭。
    //    常见用途包括实现菜单、工具提示或者下拉列表等功能。
    //    在windows上，设置透明效果后，窗⼝需要加上Qt::FramelessWindowHint格式
    //    否则没有控件位置的背景是⿊⾊的
    //    由于默认窗⼝有阴影，因此还需要将窗⼝的原有的阴影去掉，窗⼝需要加上
    //    Qt::NoDropShadowWindowHint
        setWindowFlags(Qt::Popup | Qt::FramelessWindowHint |
                    Qt::NoDropShadowWindowHint);

        setAttribute(Qt::WA_TranslucentBackground);

        // // 创建阴影效果实例，将当前控件作为父对象
        QGraphicsDropShadowEffect* shadowEffect = new
                QGraphicsDropShadowEffect(this);
        // 设置阴影的偏移量（x, y）
        shadowEffect->setOffset(0,0);
        // 设置阴影颜色
        shadowEffect->setColor("646464");
        // 设置阴影的模糊半径
        shadowEffect->setBlurRadius(10);
        // 将配置好的阴影效果应用到当前控件
        setGraphicsEffect(shadowEffect);

        // 给按钮设置
        ui->silenceBtn->setIcon(QIcon(":/images/volumn.png"));
        // 音量的默认大小是20
        ui->outSlider->setGeometry(ui->outSlider->x(),180 - 36 + 25,
                      ui->outSlider->width(), 36);
        ui->sliderBtn->move(ui->sliderBtn->x(),ui->outSlider->y()
                            - ui->sliderBtn->height() / 2);
        ui->volumeRadio->setText("20%");
}

//在 Qt 中，paintEvent 是一个特殊的事件处理函数，不需要手动调用
void VolumeTool::paintEvent(QPaintEvent *event)
{
    (void)event;
    // 1. 创建绘图对象
    QPainter painter(this);

    // 2. 设置扛锯齿
    painter.setRenderHint(QPainter::Antialiasing, true);

    // 3. 设置画笔
    // 没有画笔时， 画出来的图像就没有边框和轮廓线条
    painter.setPen(Qt::NoPen);

    // 4. 设置画刷颜色
    painter.setBrush(Qt::white);

    // 创建一个三角形
    QPolygon polygon;
    polygon.append(QPoint(35,310));
    polygon.append(QPoint(65,310));
    polygon.append(QPoint(50,330));

    // 绘制三角形
    painter.drawPolygon(polygon);
}
